import {initMixin} from './init';
import {renderMixin} from './render';
import {lifecycleMixin} from './lifecycle';
import { initGlobalAPI } from './initGlobalAPI/index'
import {stateMixin} from './state'
// import { compileToFunction } from './compiler/index.js';
// import { createElm, patch } from './vdom/patch';


function Vue(options) {
  // vue初始化操作
  this._init(options)
}

// 在原型上挂载一些方法
initMixin(Vue)
renderMixin(Vue)
lifecycleMixin(Vue)
stateMixin(Vue)

// 类加全局api
initGlobalAPI(Vue)



// let vm1 = new Vue({
//   data: {name: 'zf', age: 11}
// }) 
// let render1 = compileToFunction(`<div id="app">
//   <li key=a>a</li>
//   <li key=b>b</li>
//   <li key=c>c</li>
//   <li key=d>d</li>
// </div>`);
// let vnode = render1.call(vm1)
// let el = createElm(vnode)
// document.body.appendChild(el)


// let vm2 = new Vue({
//   data: {name: 'zf', age: 11}
// }) 
// let render2 = compileToFunction(`<div id="app">
//   <li key=b>b</li>
//   <li key=c>c</li>
//   <li key=a>a</li>
//   <li key=d>d</li>
// </div>`);
// let vnode2 = render2.call(vm2)
// // let el = createElm(vnode2)
// setTimeout(()=>{
//   patch(vnode, vnode2)
// }, 1000)

export default Vue